let departListModule=(function(){

    
    $tableBox=$('.tableBox'),
    $tbody=$tableBox.find('tbody'),
  
    $checkList=null;

    //绑定部门信息
    async function bindDepart(){
        let result=await queryDepart();
        if(result.code==0){
            let str=``;
            result.data.forEach(item => {
                str+=`<option value="${item.id}">${item.name}</option>`
            });
            $selectBox.append(str);
        }
    }

    //从服务器获取员工列表进行绑定

    async function bindHTML(){
        let params={
            departmentId:$selectBox.val(),
            search:$searchInp.val().trim()
        }
        let result=await axios.get('/department/list',{
            params
        });
        if(result!=0) return;
        let str=``;
        result.data.forEach(item=>{
            let {id,
                name,
                sex,
                email,
                phone,
                department,
                job,
                sesc
            }=item;
            str += `<tr>
            <td class="w10">1</td>
            <td class="w20">总裁办</td>
            <td class="w40">公司最高组织机构层，负责公司全面运营管理</td>
            <td class="w20">
                <a href="javascript:;">编辑</a>
                <a href="javascript:;">删除</a>
            </td>
        </tr>`;
        });
        $tbody.html(str);
        $checkList=$tbody.find('input[type="checkbox"]');
    }

    //搜索触发数据的重新绑定
    function searHandle(){
        $selectBox.change(bindHTML);
        $searchInp.on('keydown',ev=>{
            if(ev.keyCode===13){
                bindHTML();
            }
        })
    }

    //基于事件委托 实现需要处理的事情
    function delegate(){
        $tbody.click(async ev=>{
            let target=ev.target;
            $target = $(target);
            TAG= target.tagName;
            TEXT=target.innerHtml.trim();
          if(TAG === 'A'){
              let userId=$target.parent().attr('departmentId')
            if(TEXT === "编辑"){
                // 跳转到新增页面，为了区分试修改还是新增，我们需要问号传递一个标识
                //过去，并且告知页面我们需要修改的试谁  useradd.html?id=xxx
                window.location.href=`departmentadd.html?id=${departmentId}`
            }
            if(TEXT === "删除"){
                //防止误操作，我们在删除前做一个提示
                let flag=confirm('小主，你确定要删除编号为[${userId}]的信息吗？一旦删除可就没了哦');
                if(!flag) return;
                let result= await axios.post('/department/delete',{
                    params:{
                        userId
                    }
                });
                if(result.code==0){
                    alert('小主，您很棒，已成功删除一条数据');
                    //在页面中移除本数据
                    $target.parent().remove();
                    $checkList=$tbody.find('input[type="checkbox"]');//chongxin获取
                    return;
                }
                alert('小主，当前网络繁忙，稍后再试');
                return;
            }
            if(TEXT === "重置密码"){
                let flag=confirm('小主，你确定要为编号[${userId}]重置密码吗？');
                if(!flag) return;
                let result= await axios.get('/user/resetpassword',{
                   
                        userId
                    
                });
                if(result.code==0){
                    alert('小主，您很棒，已成功重置密码,赶快去通知吧');
                    return;
                } 
                alert('小主，当前网络繁忙，稍后再试');
            }
          }
        })
    }

    //全选处理
    function selectHandle(){
        $checkAll.click(ev=>{
            let checked=$checkAll.prop('checked');
            $checkList.prop('checked',checked);
        });
        $tbody.click(ev=>{
            let target=ev.target;
            TAG=target.tagName,
            $target=$(target);
            if(TAG === "INPUT"){
                let flag=true;
                [].forEach.call($checkList,item=>{
                    if(!$(item).prop('cheched')){
                        flag=false;
                    }
                });
                $checkAll.prop('checked',flag);
            }
        });
        $deleteAll.click(ev=>{
            //获取当前选中项对应的编号
            let arr=[];
            [].forEach.call($checkList,item=>{
                if(!$(item).prop('cheched')){
                   arr.push($(item).attr('userId'));
                }
            });
            //如果没有被选中的要提示
            if(arr.length===0){
                alert('小主，请您先选中要删除的项');
                return;
            }
            //删除前的确认 提示
            let flag= confirm("x小主，您确定要删除这${arr.length}条数据吗？");
            if(!flag){
                return;
            }

            //批量删除真实项目中有两种方法：1，把要删除的私信传递给服务器，服务自己实现批量删除，客户端不需要做特别多的处理
            //2，需要客户端自己基于递归的方式，一项项的去删除（客户端需要处理）；
            let index=-1;
            let complete=()=>{
                if(index>=arr.length){
                    alert('小主，已经为您成功删除选中的数据');
                }else{
                    alert("小主，已经为您成功删除了$(index+1}条数据，删除中遇到问题，已结束")
                }
                //重新数据绑定
                bindHTML();
            };
            let send= async ()=>{
                if(index>=arr.length){
                    //都删除了
                    complete();
                    return;
                }
                let userId=arr[++index];
                let result= await axios.get('/user/delete',{
                    userId
                });
                if(userId.code!=0){
                    //删除中遇到错误的结束删除
                    complete();
                    return;
                };
                send();
            };
            send();
        })
    }
    return {
        init(){
            bindDepart();
            bindHTML();
        }
    }
})();
userListModule.init();